import { defineStore } from "pinia";

// 默认头像地址 用户名
const defaultAvatar = 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'
const defaultName = '爱新觉罗·玄烨' // '空用户'

export default defineStore('user', {
    state: () => {
        return {
            userInfo: {},
            logindata: {},
            account: ''
        }
    },
    getters: {
        username: (state) => {
            return state.userInfo?.true_name ? state.userInfo.true_name : defaultName
        },
        avatar: (state) => {
            return state.userInfo?.avatar ? state.userInfo.avatar : defaultAvatar
        },
        uid: (state) => {
            return state.logindata?.id ? state.logindata.id : 0
        },
        isLogin: (state) => {
            return !isEmptyObject(state.logindata) && !isEmptyObject(state.userInfo)
        },
    },
    actions: {
        showSomething(content) {
            console.log(this.$state.userInfo);
        }
    },

    // 数据持久化
    // persist: true,
    persist: {
        storage: localStorage, // 缓存方式
        key: 'userInfo', // 自定义键名
        // pick: ['save.me', 'saveMeToo'], // 数组中的持久化，空数组会表示没有状态需要持久化；一般不定义即可，表示整个state持久化
        omit: [], // 在数组不会被持久化；[]或未定义表示整个状态持久存在（没有省略任何内容）。
    },
})

// 判断是否为空对象
function isEmptyObject(obj) {
    return Object.keys(obj).length === 0;
}